/*

author: TangQiao @ Wind 

	problem name: DNA
	source : POJ Monthly,Static

	problem type: 找递推式 数学题
	problem description: 输入DNA长度，找出不含101和111的DNA的种数。
	problem solution: 找出递推式，我是分成以0开头的DNA和以1开头的DNA分别求。然后这样还不行。
			  因为DNA最大的长度太长，即使是递推也不能在规定时间内求出。
			  实际上此题的答案有循环，我通过测试发现在1000为周期内为重复的（后来发现200为周期也行）
			  也就是说1000和2000，20000，以及1000000的答案都是一样的。
			  所以先把0~1000的答案算出，然后输入N后，先把N%1000，然后就知道答案了。
	another solution: 周浩发现些题答案在规律上与菲不拉奇数列对应
			  数列为　１　１　２　３　５　８　。。。即每一个数是前两个数的和
	  本题Ｎ对应的答案是：　　　  
	  			n=3 an= 6  =2*3;
	  			n=4 an= 9  =3*3;
	  			n=5 an= 15 =3*5;
	  			n=6 an= 25 =5*5;
	  			可以发现是n*n和n*(n+1)这样的交替规律。
	  				

	date : 2005.5.30 北大月赛
	
*/

#include <stdio.h>
#include <string.h>



main()
{
	int i;
	int n;
	int shu[10][2];
	int c0,c1;
	int an[1001];

//	while (scanf("%d", &n)!=EOF)
	{
	//	if (n>1000) n%=1000;
		shu[0][0]=shu[0][1]=1;
		shu[1][0]=1;
		shu[1][1]=1;
		shu[2][0]=2;
		shu[2][1]=2;
		shu[3][0]=4;
		shu[3][1]=2;

		an[0]=1;
		an[1]=2;
		an[2]=4;
		an[3]=6;
		for (i=4;i<=1000;i++)
		{
			c1=(shu[3][1]-shu[0][0]+shu[3][0]-shu[2][1])%2005;
			c0=(shu[3][1]+shu[3][0])%2005;
			if (c1<0) c1+=2005;
			if (c0<0) c0+=2005;
			memcpy(shu,shu+1,sizeof(int)*6);
			/*			for (j=0;j<=2;j++) 
			{
				shu[j][0]=shu[j+1][0];
				shu[j][1]=shu[j+1][1];
			}*/
			shu[3][0]=c0;
			shu[3][1]=c1;
			an[i]=(c0+c1)%2005;
		}
	
	}
	while (scanf("%d", &n)!=EOF)
	{
		int nn;
		nn=n%1000;
		printf("%d\n", an[nn]);
	}


	
	return 0;
}